package com.molichuxing.gateway.bff.car.services;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.gateway.bff.car.entity.request.create.AccidentExamineCreateVo;
import com.molichuxing.gateway.bff.car.entity.request.modify.CarDetailModifyVo;
import com.molichuxing.gateway.bff.car.entity.response.*;

import java.util.List;
import java.util.Map;

/**
 * 事故BFF
 * @author xuelin yi
 */
public interface AccidentBffService {

	/**
	 * 根据查询条件获取车辆事故列表信息
	 *    * licencePlate 车牌号
	 *    * vin 车架号
	 *    * userId 用户id
	 *    * liabilityType 责任类型（0：无责，1：全责，2：主责，3：同责，4：次责）
	 *    * isCasualty 是否有人伤（0：无人伤，1：有人伤）
	 *    * accidentType 事故类型（1:单方事故，2：双方事故，3：多方事故，4：停放受损，5：车辆盗抢，6：车辆自燃，7：车辆涉水，8：重大自然灾害）
	 *    * accidentStartTime     出险开始时间
	 *    * accidentEndTime     出险结束时间
	 *    * status 事故状态（1：事故未确认，2：事故已确认，3：结案未确认，4：已结案，5：无效报备）
	 * @param map
	 * @param pageSize
	 * @param pageNum
	 * @return
	 */
	Paged<AccidentBizVo> getCarAccidentPage(Map<String, Object> map, Integer pageNum, Integer pageSize);

	/**
	 * 根据车辆id获取事故报备信息
	 * @param carId
	 * @return
	 */
	List<AccidentBizVo> getCarAccidentList(Integer carId);

	/**
	 * 根据事故id获取事故信息
	 * @param accidentId
	 * @return
	 * @throws Exception
	 */
	AccidentDetailVo getAccident(Integer accidentId) throws Exception;

	/**
	 * 根据事故id获取事故信息
	 * @param accidentId
	 * @return
	 * @throws Exception
	 */
	AccidentVerifyBizVo verifyRepeat(Integer accidentId, Integer version) throws Exception;

    /**
     * 审核事故
     * @param createDto
     * @return
     * @throws Exception
     */
    Boolean modifyExamineAccident(AccidentExamineCreateVo createDto) throws Exception;

}
